/**
 * 导航工具函数
 * 提供统一的页面跳转方法
 */

/**
 * 跳转到登录页
 * @param {String} redirectUrl - 登录后重定向的URL
 */
function navigateToLogin(redirectUrl) {
  const url = redirectUrl 
    ? `/pages/login/login?redirect=${encodeURIComponent(redirectUrl)}`
    : '/pages/login/login';
  
  wx.reLaunch({ url });
}

/**
 * 跳转到指定页面
 * @param {String} url - 页面路径
 * @param {Object} params - 查询参数对象
 * @param {String} method - 跳转方法：navigateTo（默认）、redirectTo、reLaunch、switchTab
 */
function navigateTo(url, params = {}, method = 'navigateTo') {
  // 构建查询字符串
  const queryString = Object.keys(params)
    .map(key => `${key}=${encodeURIComponent(params[key])}`)
    .join('&');
  
  const fullUrl = queryString ? `${url}?${queryString}` : url;
  
  const methods = {
    navigateTo: wx.navigateTo,
    redirectTo: wx.redirectTo,
    reLaunch: wx.reLaunch,
    switchTab: wx.switchTab
  };
  
  const navMethod = methods[method] || wx.navigateTo;
  navMethod({ url: fullUrl });
}

/**
 * 返回上一页
 * @param {Number} delta - 返回的页面数，默认1
 */
function navigateBack(delta = 1) {
  wx.navigateBack({ delta });
}

/**
 * 检查页面路径是否为 TabBar 页面
 * @param {String} url - 页面路径
 * @returns {Boolean} 是否为 TabBar 页面
 */
function isTabBarPage(url) {
  const tabBarPages = [
    '/pages/index/index',
    '/pages/timeline/timeline',
    '/pages/guide/guide',
    '/pages/profile/profile'
  ];
  
  return tabBarPages.some(page => url.startsWith(page));
}

/**
 * 智能跳转（自动选择跳转方法）
 * @param {String} url - 页面路径
 * @param {Object} params - 查询参数对象
 */
function smartNavigate(url, params = {}) {
  if (isTabBarPage(url)) {
    navigateTo(url, params, 'switchTab');
  } else {
    navigateTo(url, params, 'navigateTo');
  }
}

module.exports = {
  navigateToLogin,
  navigateTo,
  navigateBack,
  isTabBarPage,
  smartNavigate
};

